草庐IT

C++ 循环

全部标签

windows - 循环遍历 .bat 中的行并存储变量而不覆盖

我正在尝试将来自性能计数器的指标值存储在变量中FOR/F"tokens=1-2delims==,¶"%%IIN('typeperf"\Memory\Availablebytes"-sc1')DO(ECHOI%%I,J%%J)但是for循环的每次迭代都会覆盖前一行中的变量。有什么建议吗? 最佳答案 @echooffsetlocalenableDelayedExpansionFOR/F"skip=1tokens=1-2delims==,¶"%%IIN('typeperf"\Memory\Availablebytes"-sc1')DO(i

c - 读取 ntdll.dll + offset 导致访问冲突

我试图逐字节读取加载到我的可执行文件中的ntdll.dll的内存。该可执行文件在我的x64windows7机器上编译为x32可执行文件。我编写了一个名为FindPattern的函数,它接收一个特定的字节数组,并在ntdll.dll模块中查找这个字节数组。我已经在其他模块上检查过这个功能,我确信它工作正常。现在当我在我的ntdll模块上使用这个函数时,它在读取内存ntdll+0x1000时崩溃。我在windbg上检查过这个,windbg也不能读取内存:0:000>dbntdll+FF0L2077df0ff00000000000000000-0000000000000000........

windows - 批量循环按日期排序的文件夹名称忽略较新的 N 元素

因此,我必须在Windows(.bat)中进行批处理以删除备份磁盘中的旧文件夹。我制作了一个脚本来单独删除文件夹:delete_single_folder.bat@echooffif%1.==.gotousageifexist%1\nulgotodeldirechoFolder%1doesnotexists.gotoend::------------------------------------------------:deldirrd/s/q%1echoFolder%1deleted.goto:end::---------------------------------------

windows - 批处理脚本在目录上递归循环,附加初始目录?

我有以下批处理脚本for/D/r%%fin(%~dp0)doecho%%f据我所知,应该循环遍历存储批处理脚本的目录中的所有目录,并打印完整的文件路径....但是,如果批处理脚本位于“C:\my\path”中,并且在它下面有文件夹“a”、“a\b”和“a\b\c”,我会得到以下输出C:\my\path\a\C:\my\pathC:\my\path\a\b\C:\my\pathC:\my\path\a\b\c\C:\my\path这个脚本有什么问题? 最佳答案 您似乎没有使用for命令:for/D/r%~dp0%%Fin(*.*)do

C: 函数没有更新全局数组(使用 strcpy/malloc)

尝试从Windows中的目录获取文件名。通过名为list_files的函数执行此操作。该函数由于某种原因(或看起来像它)没有做任何事情,因为每当我打印数组时,它都是空的。我之前测试过这段代码,它运行良好。我一直在编码(这本来是一个更长的代码)我注意到每当我以后不得不使用数组时它返回0(什么都没有)voidlist_files();char*filesList[0][254];inti=0,n=0,l=254;chardirectory[]={"C:/Users/test/Downloads/test/"};intmain(){list_files();}voidlist_files()

c++ - 我的 C 程序为钩子(Hook)提供了一个回调函数。我怎样才能让它活着,不笨拙?

目前,我正在生成一个带有操作系统库函数(Windows.h)的消息框,它神奇地让我的程序保持事件状态并响应对回调函数的调用。有什么替代方法可以让程序默默地永远运行?捕获“Ctrl-c”或SIGINT并随后调用RemoveHook()以干净退出会很好,但不是必需的。HOOKmy_hook;CALLBACKmy_callback_fn(){...}intmain(){my_hook=SetHook(my_callback_fn);MessageBox("PressOKtostop.");//Thisisbad.RemoveHook(my_hook);return0;}

windows - For 循环在 makefile : "i was unexpected at this time" 中不起作用

我有一个非常简单的makefile:all:@foriin123;\do\echo"i:$$i";\done然而,当我运行它时,我收到了“此时我出乎意料”的错误。知道为什么会这样吗?我在WindowsXP上运行。上述脚本在Windows中的等效项是什么? 最佳答案 如果您在Windows上运行(可能是因为this),您编写的命令必须是有效的Windows命令。我的意思是您可以在Windowsshellcmd.exe中运行的命令。在这里,您尝试运行的命令是适用于bashshell的有效UNIX命令。它们不适用于Windowsshell

windows - 在批处理文件中编写循环的语法

我正在尝试为我经常执行的任务编写一个小的批处理文件。我以前从未使用过for,这是我第一次尝试这个。这是我到目前为止所带来的:for/f%iin('ctfind.-verlbtype(%1)-print')doctlsvt-g%i基本上,它会尝试查找具有给定cleracase标签的所有文件,然后显示这些文件的版本树。问题出在%1中。但是,当我有时尝试运行它时,它会给我一个错误,提示-print)不是预期的,或者有时它只是在命令提示符下打印此命令。我猜它在多个括号之间变得困惑。有什么线索可以解决这个问题吗? 最佳答案 尝试在for中引用

c - 创建/删除一系列相同大小的文件后 NTFS 磁盘空间不足

我在处理一个大型项目时遇到了一个非常奇怪的问题。我在一个分区上写了一堆相同大小的文件(尝试了RAM磁盘和通过diskmgmt.msc创建的虚拟磁盘)。当没有足够的可用空间来容纳另一个文件时(如GetDiskFreeSpaceExW所报告),我删除了一个(只有一个)以前创建的文件并写入新文件。然后,我删除另一个旧文件并写入一个新文件,无限循环(因此,您可以将分区视为大小相同的文件的环形缓冲区)。在一系列的写入-删除(从几百到几千)之后,我在写入新文件时遇到了nofreespace错误(在此之前,GetDiskFreeSpaceExW报告足够的空间)。我请我的几位同事尝试在他们的硬件上重现

windows - 关于消息循环的问题

有个问题困扰了我很久。简短版:WindowsMessageLoop的工作范式是什么?详细版本:当我们启动一个Windows应用程序(不是控制台应用程序)时,我们可以通过鼠标或键盘与它进行交互。该应用程序从其消息队列中检索代表我们Action的各种消息。Windows负责收集我们的操作并将消息正确地馈送到该队列中。但这种情况是否意味着Windows必须无限地运行?我认为Windows调度程序应该一直在运行。它可能会在预定义的时间间隔内由时间中断调用。当调度程序被时间中断触发时,它将当前线程切换到下一个挂起的线程。单个线程只能通过GetMessage()获取其消息计划运行时间。我想知道如果